package com.briup.smartlab.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.briup.smartlab.bean.EnvDetail;
import com.briup.smartlab.dao.EnvDetailMapper;
import com.briup.smartlab.exception.ServiceException;
import com.briup.smartlab.service.IEnvDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service //将类的对象交给spring ioc容器创建和管理
public class EnvDetailServiceImpl implements IEnvDetailService {
    @Autowired
    private EnvDetailMapper mapper;

    @Override
    public EnvDetail findById(String id) {
        /*
            1.判断参数
            当 数据不存在时，提示用户数据已被删除
            2.
         */

        //2.调用dao层方法
        EnvDetail envDetail = mapper.selectById(id);
        //3.返回数据给web
        return envDetail;
    }

    @Override
    public Page<EnvDetail> findByPage(Integer pageNum, Integer pageSize, String start, String end, String type) {
        return null;
    }

    @Override
    public void saveOrUpdate(EnvDetail envDetail) {
        //1.判断参数
        /*
            2.根据数据是否提供ID值，调用mapper方法
            如果提供ID参数值，表示修改
               没有提供     表示新增
         */
        if(envDetail.getId() == null){//表示新增
            /*
                当新增数据时，数据是否符合要求？
                1.判断数据是否为空，如果为空，提示用户数据不合法
                2.判断数据是否重复，数据验证唯一性
                3.判断数据的大小或长度或内容
             */
            if(envDetail.getValue() == null){
                throw new ServiceException("环境数据值不能为空");
            }
            mapper.insert(envDetail);
        }else {//表示修改
            /**
             *
             * 1.判断修改的数据是否存在
             * 2.判断修改的数据是否合法，重复 内容...符合要求
             *
             */
            mapper.updateById(envDetail);
        }
    }

    @Override
    public void deleteById(String id) {
        //1.判断参数：当数据不存在时， 提示用户如何数据已经被删除
        //2.调用删除： 2种：1.直接删除 delete   2.逻辑删除  update
        mapper.deleteById(id);
    }

    @Override
    public void deleteByBatch(List<String> ids) {
        //1.参数校验：循环判断数据是否合法
        //2.进行批删除
        mapper.deleteBatchIds(ids);


    }
}
